package com.yc.cloud.admin.service;

import com.yc.cloud.admin.dto.request.MediaKitRecordReqDTO;
import com.yc.cloud.admin.vo.MediaStreamVo;
import java.util.List;

public interface MediaKitApiService {

	/**
	 * 开始录制流
	 * @param reqDTO 录制请求参数
	 * @return 是否成功
	 */
	boolean startRecord(MediaKitRecordReqDTO reqDTO);

	/**
	 * 停止录制流
	 * @param reqDTO 录制请求参数
	 * @return 是否成功
	 */
	boolean stopRecord(MediaKitRecordReqDTO reqDTO);

	/**
	 * 获取所有在线视频流列表
	 * @return 流列表
	 */
	List<MediaStreamVo> getMediaList();

	/**
	 * 获取截图
	 * @param url 需要截图的url
	 * @return 截图的base64数据或URL
	 */
	String getSnap(String url);

	/**
	 * 查询录制状态
	 * @param reqDTO 录制请求参数
	 * @return 是否正在录制
	 */
	boolean isRecord(MediaKitRecordReqDTO reqDTO);

	/**
	 * 为摄像头开始录制（调度服务专用）
	 * @param cameraId 摄像头ID
	 * @param config 录制配置
	 * @return 是否成功
	 */
	boolean startRecording(Long cameraId, com.yc.cloud.admin.dto.RecordingConfig config);

	/**
	 * 为摄像头停止录制（调度服务专用）
	 * @param cameraId 摄像头ID
	 * @return 是否成功
	 */
	boolean stopRecording(Long cameraId);

	/**
	 * 获取服务器配置
	 * @param secret API密钥
	 * @return 服务器配置数据
	 */
	java.util.Map<String, Object> getServerConfig(String secret);

	/**
	 * 设置服务器配置
	 * @param secret API密钥
	 * @param configs 要设置的配置项
	 * @return 设置结果
	 */
	java.util.Map<String, Object> setServerConfig(String secret, java.util.Map<String, String> configs);
}